Procedure Call
A sequential or concurrent statement which causes a procedure to be
executed. The values of any parameters are passed in or out of the
procedure, depending on their Mode.
Syntax
[Label:] ProcedureName [ ( [Formal =>] Actual, ... ) ]
Formal = {either} Name FunctionCall
Actual = Expression
Where
entity-begin--end {passive procedure call}
architecture-begin--end
block-begin--end
generate-begin--end
See Sequential Statement
Rules
Sequential statements can be labelled in VHDL'93, but not in VHDL'87.
The two forms of syntax (ordered list or explicitly named parameters) can be
mixed, but the ordered list must come before the named parameters.
Synthesis
A procedure call is synthesized by substituting the logic represented by the
procedure in place of the call. Synthesis does not treat procedures as
shareable resources.
A procedure call in a clocked process may result in registers being inferred
from signal assignments within the procedure.
Tips
Use the parameter names rather than order to improve readability and reduce
the risk of making errors.
Example
procedure Write (L: inout Line;
Value: in Std_logic_vector;
Justified: in Side := Right;
Field: in Width := 0);
...
Write (Buff, A, Left, 8);
Write (Buff, C);
Write (Justified => Left, Field => 12,
L => Buff, Value => D);
See Also
Procedure, Function Call
|